<a href="https://github.com/socketstream/socketstream/edit/master/src/docs/tutorials/en/features.ngdoc" class="improve-docs"><i class="icon-edit"> </i>Improve this doc</a><h1><code ng:non-bindable=""></code>
<div><span class="hint"></span>
</div>
</h1>
<div><div class="features-page"><h2 id="features">Features</h2>
<h5 id="features_client-side">Client Side</h5>
<ul>
<li>Use <code>require()</code> and <code>exports</code> in your client-side code as you would on the server</li>
<li>Define multiple single-page clients by choosing the CSS, JS and client-side templates you wish to serve</li>
<li>Integrated asset manager - packages and <a href="https://github.com/mishoo/UglifyJS">minifies</a> all client-side assets. Includes CDN support</li>
<li>Live Reload - automatically reloads the browser when a HTML, CSS or JS client file changes</li>
<li>Comprehensive support for client-side templates - use Hogan/Mustache/CoffeeKup/jQuery or write your own wrapper</li>
<li>Use optional code formatters (e.g. CoffeeScript, Jade, Stylus, Less, etc) by easily installing wrapper modules</li>
<li>Multiple clients work seamlessly with HTML Push State &#39;mock routing&#39; so you can use <a href="http://documentcloud.github.com/backbone/#Router">Backbone Router</a>, <a href="http://davisjs.com">Davis JS</a> and more</li>
<li>Works great with <a href="http://emberjs.com">Ember.js</a> for &#39;reactive templates&#39; which automatically update when data changes</li>
<li>Bundled with jQuery - though not dependent on it. Will work great with Zepto and other libraries</li>
<li>Easily use additional client libraries such as <a href="http://documentcloud.github.com/underscore/">Underscore.js</a></li>
</ul>
<h5 id="features_server-side">Server Side</h5>
<ul>
<li>True bi-directional communication using websockets (or websocket fallbacks). No more slow, messy AJAX!</li>
<li>Modular Websocket Transports - switch between <a href="http://socket.io">Engine.IO</a> (bundled by default) or <a href="https://github.com/socketstream/ss-sockjs">SockJS</a> without changing your app code</li>
<li>Easily share code between the client and server. Ideal for business logic and model validation (see FAQs below)</li>
<li>Request Middleware - enabling session access, authentication, logging, distributed requests and more</li>
<li>Effortless, scalable, pub/sub baked right in - including Private Channels</li>
<li>Easy authentication - use a backend database or authenticate against Facebook Connect, Twitter, etc using <a href="https://github.com/bnoguchi/everyauth">Everyauth</a></li>
<li>Uses <a href="http://senchalabs.github.com/connect/">Connect</a> - Hook-in your own HTTP middleware, share sessions between HTTP/Connect/Express/SocketStream</li>
<li>Optionally use <a href="http://redis.io">Redis</a> for fast session retrieval, pub/sub, list of users online, and any other data your app needs instantly</li>
</ul>
<h5 id="features_optional-modules">Optional Modules (officially maintained and supported)</h5>
<ul>
<li><strong><a href="https://github.com/socketstream/ss-sockjs">ss-sockjs</a></strong> Use <a href="https://github.com/sockjs/sockjs-client">SockJS</a> as the websocket transport instead of Engine.IO</li>
<li><strong><a href="https://github.com/socketstream/ss-console">ss-console</a></strong> Connect to a live server and call RPC actions or publish events over the REPL / terminal</li>
<li>Code Formatters: <strong><a href="https://github.com/socketstream/ss-coffee">ss-coffee</a></strong> (CoffeeScript), <strong><a href="https://github.com/socketstream/ss-jade">ss-jade</a></strong> Jade (for HTML), <strong><a href="https://github.com/socketstream/ss-stylus">ss-stylus</a></strong> Stylus (for CSS), <strong><a href="https://github.com/socketstream/ss-less">ss-less</a></strong> Less (for CSS)</li>
<li>Client-side Template Engines: <strong><a href="https://github.com/socketstream/ss-hogan">ss-hogan</a></strong> Hogan/Mustache, <strong><a href="https://github.com/socketstream/ss-coffeekup">ss-coffeekup</a></strong> CoffeeKup</li>
</ul>
</div></div>
